package br.com.skpharma.dao;
import java.util.ArrayList;

import br.com.skpharma.db.DB;
import br.com.skpharma.vo.VendaVO;



public class DAOVenda {
	private DB db = new DB("jdbc:postgresql://localhost:5432/skpharma","postgres","postgres");
	private VendaVO vendaVO;

	public DAOVenda(){
		vendaVO = new VendaVO();
	}
	
	public VendaVO getVendaVO() {
		return vendaVO;
	}

	public void setVendaVO(VendaVO vendaVO) {
		this.vendaVO = vendaVO;
	}
	
	public void salvar(VendaVO vendaVO, ArrayList lista){
		int codvenda = 0;
		if(db.connect()){
			db.update("insert into venda (cod_cliente, horarioentrega, cod_status) values ('" + vendaVO.getClienteVO().getCod() + "','" + vendaVO.getHorarioEntrega() + "','" + vendaVO.getStatusVO().getCod() +"')");
			
			db.select("select max (cod_venda) as cod_venda from venda");
			if(db.moveNext()){
				
				codvenda = db.getInt("cod_venda");

			}
			db.disconnect();
		}		
		
		DAOItem daoItem = new DAOItem();
		daoItem.salvar(lista,codvenda);
	}

	public void excluir(){
		if(db.connect()){
			db.update("delete from venda where cod_venda = " + vendaVO.getCod());			
			db.disconnect();
		}		
	}
	
	public void carregar(int codigo){		
		if(db.connect()){
			db.select("select venda.*, status.cod_status, cliente.cod_cliente from venda inner join status on (venda.cod_status = status.cod_status) inner join cliente on (venda.cod_cliente = cliente.cod_cliente) where cod_venda =" + codigo);
			if(db.moveNext()){
				vendaVO.setCod(db.getInt("cod_venda"));
				vendaVO.setHorarioEntrega(db.getDate("horarioEntrega"));
				
				DAOStatus daoStatus = new DAOStatus();
				DAOCliente daoCliente = new DAOCliente();
				daoStatus.carregar(db.getInt("cod_status"));
				daoCliente.obter(db.getInt("cod_cliente"));
					
				vendaVO.setClienteVO(daoCliente.getClienteVO());
				vendaVO.setStatusVO(daoStatus.getStatusVO());
				
		
			}
			db.disconnect();
		}		
	}
	
	public ArrayList obterListaPorCliente(int codigo){
		ArrayList lista = new ArrayList();
		if(db.connect()){
			db.select("select venda.*, status.cod_status, cliente.cod_cliente from venda inner join status on (venda.cod_status = status.cod_status) inner join cliente on (venda.cod_cliente = cliente.cod_cliente) where cod_cliente =" + codigo);
			while(db.moveNext()){
				vendaVO.setCod(db.getInt("cod_venda"));
				vendaVO.setHorarioEntrega(db.getDate("horarioEntrega"));
				
				DAOStatus daoStatus = new DAOStatus();
				DAOCliente daoCliente = new DAOCliente();
				daoStatus.carregar(db.getInt("cod_status"));
				daoCliente.obter(db.getInt("cod_cliente"));
					
				vendaVO.setClienteVO(daoCliente.getClienteVO());
				vendaVO.setStatusVO(daoStatus.getStatusVO());

				lista.add(vendaVO);
			}
			db.disconnect();
		}		
		return lista;
	}

	
}
